#include <stdio.h>
#include <limits.h>
void MulMax1(int A[],int res[],int n) {    // 暴力解法
    int max = INT_MIN;
    int temp = 0;
    for(int i=0;i<n;i++) {
        for(int j=i;j<n;j++){
            temp = A[i]*A[j];
            if(temp>max) {
                max = temp;
            } 
        }
        res[i] = max;
        max  = INT_MIN; // reset max for next iterationin
    }
}

void MulMax2(int A[],int res[],int n) {    // 优化解法
    int max = INT_MIN;
    int min = INT_MAX;
    for(int i=0;i<n;i++){  // 找出最大值和最小值
        if(A[i]>max) {
            max = A[i];
        }
        if(A[i]<min) {
            min = A[i];
        }
    }
    for(int i=0;i<n;i++){
        if(A[i]>= 0) {
            res[i] = max*A[i];
        } else {
            res[i] = min*A[i];
        }
    }
    
}
void printSequence(int res[],int n){
    for(int i=0;i<n;i++){
        printf("%d ",res[i]);
    }
    printf("\n");
}
int main() {
    int A[4]={1,4,-9,6};
    // int res[4]={6,24,81,36};
    int n = sizeof(A)/sizeof(A[0]);
    int res[n];
    //  解法1 时间复杂度O(n^2) 空间复杂度O(1)
    MulMax1(A,res,n);printSequence(res,n);
    //  解法2 时间复杂度O(n) 空间复杂度O(1)
    MulMax2(A,res,n);printSequence(res,n);
    return 0;
}